perm filename RESPC.F4[NEW,LCS]4 blob sn#318232 filedate 1977-11-18 generic text, type T, neo UTF8
00100		SUBROUTINE RESPC
00200		COMMON/STF/RSTFAC(8),RSTJ2 /POSI/STFF(8),JJ2,JPQ
00300		1 /IPG/IPG,JPG,BRACK(0/7),RSTNUM(8),RPSZ(8),RHGT(8),
00400		1 RCLEF(0/7) /IVV/IV(1)
00500		COMMON RS,JA,REST,J2,RQ(18),JX,PR,LX,RDIS
00600	C  ORDER OF COMMON BLOCKS **MUST** STAY AS IS!
00700		COMMON/XRN/RN(1) /SF/KL,RT,KP,STFSZ,NAMX
00800		1 /PTR/KWDS(1)/LLL/L,LL,I,IX/XXX/LK,LP,JY /JN/J,N
00900	C  INCREASE DIMENSION OF KWDS FOR VERY FULL PAGES.
01000	      DIMENSION NRD(100),MM(1500),NN(1500),BARS(509),E(100),F(100),
01100		1 G(100),H(100),KPN(1),HH(100),HHH(100),DUMMY(100),PGTRN(500)
01200		INTEGER DUMMY
01300		COMMON /PX/PN(1) /Q/Q(1)
01400		1 /RCLF/KK,CLEF,KW,ITEM,RSTAFF,SN,YN,RNAM,RNAM2,RNAM3
01500		1 /KBAR/KBAR(1) /RSP/KNM(10),ENDLN,KQ,NAME,NMPG,SPCNT
01600		DATA FIB/.8/  ,RSPC/28./,PGNUM/1.6/,RNMHT/16.0/,RNMSZ/1.2/
01700		1 ,RLTRSZ/1.0/,SPCPG/2.7/,SPCRX/1.5/
01800	C  RSPC=28 SEEMS TO BE ARBITRARY. SPCRX USED IN RHYTH RESPACE.
01900		EQUIVALENCE (RQ(2),R4),(R5,RQ(3)),(R6,RQ(4)),(R7,RQ(5)),(MM,RN)
02000		1,(NN,RN(501)),(KPN,PN),(KS,RS),(BARS,KBAR(4)),(HHH,RN(2250))
02100		1,(R8,RQ(6)),(R9,RQ(7)),(RQ(10),XLFT),(KBR,KBAR),(T,KBAR(2))
02200		1,(LASTNM,KBAR(3)),(LCNT,IV(45)),(NDPY,IV(46)),(HH,RN(1250))
02300		1,(E,RN(1000)),(F,RN(2500)),(G,RN(2700)),(H,RN(2850))
02400		1,(DUMMY,RN(1400)),(PGTRN(1),KBAR(516))
02500	C  RQ(2) IS R4, RQ(3) IS R5 ETC.
02600	
02700		IF(NMPG.NE.'PAGEA')GO TO 2000
02800		NPZ='PAGEZ'
02900		RNEXT=0
03000	2000	SPCNT=1.0
03100		JX=0
03200		JCEN=0
03300	C  FLAG FOR CENTERED RESTS.
03400		XT=0
03500		PX=0
03600		CALL SHFT1(KQ)
03700		KK=L
03800	CC	TYPE 3001,L
03900	C  DELETES EXTRA BAR LINES, ETC.
04000		IF(IPG)CALL RESTS
04100	C???	IF(N)RETURN 
04200	C N IS NEG., ONLY RESTS WERE ON THIS LINE. (WHAT ABOUT LAST LINE???)
04300	C  FROM NOW ON ALL CODES #-1 ARE IGNORED, RESTS HAVE BEEN COMBINED.
04400		CALL SHIFT
04500	C  L=NUMBER OF ITEMS FOR RHY RECONS.
04600		JJ2=L+2
04700	C FOR WDCNT IN .PAG FILE
04800		N=0
04900		S=-100
05000		R=0
05100		KCLEF=0
05200		NOGRCE=-1
05300	C  GRACE NOTE FLAG
05400	
05500		DO 601 K=1,L
05600		R=CODEN(KPN,K,Q,J)
05700		RZ=Q(J)
05800	CX	J=KPN(K)
05900	CC	N=N+1
06000	CC	NN(N)=0
06100	CC	MM(N)=J+3
06200		CALL MMNN(3)
06300	CX	R=Q(J+1)
06400	801	IF(R.NE.1)GO TO 2801
06500		IF(RZ.LT.7)GO TO 601
06600		IF(Q(J+9).GT..05)GO TO 702
06700		IF(Q(J+9).EQ.0)GO TO 601
06800	CC	IF(Q(J+8).EQ.1000)GO TO 601
06900	C  SKIP GRACE NOTE, OR NOTES WITHOUT RHY., OR .LT.1/88 NOTES.
07000		NOGRCE=0
07100		GO TO 601
07200	2801	IF(R.NE.2)GO TO 1801
07300		IF(RZ.LT.5)GO TO 601
07400		IF(IPG)GO TO 1801
07500		IF(RZ.GE.6)JCEN=-1 
07600	CC	IF(RZ.GE.6)GO TO 601
07700	C  MUST ALIGN REST WITH FIRST RHYTH ON OTHER STAFF.
07800	C  THIS WILL IGNORE WHOLE RESTS IN CENTER OF MEASURE.
07900	1801	IF(R.LT.4)GO TO 702
08000		IF(R.EQ.17)GO TO 1702
08100		IF(R.EQ.18)GO TO 1702
08200		IF(R.LE.7)GO TO 30
08300		IF(R.NE.44)GO TO 601
08400		IF(RZ.EQ.2)GO TO 601
08500	C RZ=2= BAR LINE ON UPPER STAFF
08600		IF(Q(J+6).EQ.0)GO TO 601
08700		IF(Q(J+5).EQ.0)GO TO 601
08800	C  GETS LEFT END OF LINES, CRESC., DASHES.
08900		GO TO 604
09000	30	IF(R.NE.7)GO TO 605
09100		IF(RZ.LT.5)GO TO 604
09200	C JUMP FOR STANDARD TRILL
09300		RS=Q(J+7)
09400		IF(RS.EQ.1)GO TO 604
09500		IF(ABS(RS).GE.3)GO TO 604
09600	C JUMP FOR 8VA, 15MA, ELSE THIS IS A PEDAL MARK WITHOUT LINE.
09700		GO TO 601
09800	605	IF(R.NE.4)GO TO 604
09900		IF(RZ.LE.3)GO TO 702
10000	C JUMP IF IT IS A BAR LINE
10100	CC	IF(RZ.LT.4)GO TO 601
10200		IF(Q(J+6).NE.0)GO TO 604
10300	C GO GET OTHER POS OF LINE
10400		GO TO 601
10500	1702	IF(Q(J+4).NE.0)GO TO 601
10600		IF(Q(J+2).NE.0)GO TO 601
10700	C IGNORE METER NOT IN VERT. POS. 0. (PUT IN OTHER PROGS!)
10800	702	NN(N)=R 
10900		GO TO 601
11000	C NEXT FOR MULTIPOSITION ITEMS: LINES, SLURS, BEAMS, TRILL, 8VA
11100	604	CALL MMNN(6)
11200	C NEXT POS2, 3 AND 4 OF CERTAIN ITEMS
11300		IF(R.NE.6)GO TO 601
11400	C NEXT FOR BEAMS
11500		IF(RZ.LT.8)GO TO 608
11600		IF(Q(J+10).EQ.0)GO TO 608
11700		IF(Q(J+8))GO TO 608
11800	C P8<0 = P8=P3 (PARTIAL BEAM TO LEFT)
11900		IF(Q(J+7).GT.0)CALL MMNN(8)
12000	C NEXT SHIFTS P8 OF COMPOSITE BEAMS
12100	608	IF(RZ.LT.7)GO TO 601
12200		IF(Q(J+7))GO TO 688
12300	C  P7 IS NEG FOR TREMOLO
12400		IF(Q(J+8).EQ.0)GO TO 601
12500	C P8 NEG OR POS = POS3 IN P9; P8=0= P9 IS NUM.
12600	688	IF(Q(J+9).GT.0)CALL MMNN(9)
12700	C FOUND A POS. IN P9
12800	601	CONTINUE
12900	
13000	C NEXT SORTS THE POINTS
13100	6000	J=1
13200	610	IF(Q(MM(J)).LE.Q(MM(J+1)))GO TO 710
13300		CALL EXCHG(MM(J),NN(J))
13400	C  ABOVE EXCHGS --(J) AND --(J+1)
13500		IF(J.EQ.1)GO TO 710
13600		J=J-1
13700		GO TO 610
13800	710	J=J+1
13900		IF(J.LT.N)GO TO 610
14000	C NOW ALL SORTED
14100		CALL FNDEND(R)
14200		CALL SHFTQ(R)
14300	C  SHIFTS TO PROPER HORIZ. POS.
14400		IF(IPG)CALL RESTP
14500	C  RESTP COMBINES LEFTOVER NUMBERED BARS OF RESTS.
14600		IF(N.LE.0)GO TO 122
14700	C N IS NEG IF ONLY RESTS ON THIS LINE.  GO BACK.
14800	
14900		DO 119 K=1,150
15000	119	HH(K)=0
15100	C  HH ARRAY WILL HOLD FINAL COMPOSITE.
15200		G(1)=0
15300		E(1)=0
15400		F(1)=0
15500		RN(1500)=0
15600		RN(2500)=0
15700		ST=0
15800	C ST=STAFF NUM, T=TOTAL RHYTHMS, J=CNTR OF MAIN POS. ARRAY
15900	C JJ=CNTR FOR 2ND POS. ARRAY, JJJ=CNTR FOR 3RD.
16000		KE=0
16100		J=1000
16200	933	JJ=1500
16300		JJJ=2000
16400		T=0
16500		M=0
16600		A=0
16700		B=0
16800	
16900		DO 33 K=1,N
17000		IF(NORH(KK))GO TO 33
17100	CC	KK=NN(K)
17200	CC	IF(KK.EQ.0)GO TO 33
17300	CC	IF(KK.EQ.4)GO TO 2133
17400	CC	IF(KK.EQ.17)GO TO 2133
17500	C SKIP OVER STAFF # TRAP WITH BARS, METER, KSIG.
17600	CC	IF(KK.EQ.18)GO TO 2133
17700	CC	IF(KK.GT.2)GO TO 33
17800	2133	LL=MM(K)-3
17900		IF(KK.LE.2)GO TO 1133
18000		RH=.01
18100	C RHYTHMIC VALUE OF BARLINE, METER, KSIG
18200	CCC	IF(KK.NE.4)RH=.6
18300		GO TO 3133
18400	1133	IF(Q(LL+2).NE.ST)GO TO 33
18500	C JUMP IF NOT ON RIGHT STAFF
18600		RA=9
18700		IF(KK.EQ.2)RA=7
18800		IF(Q(LL).LT.RA-2)GO TO 33
18900	C JUMP IF WDCNT IS TOO SHORT
19000		RH=Q(LL+IFIX(RA))
19100		IF(RH.EQ.0)GO TO 33
19200	3133	RZ=Q(LL+3)
19300		IF(ZERO(RZ,A).EQ.0)GO TO 133
19400	C  JUMP IF THIS NOTE IN SAME POS. AS LAST ONE.
19500		RRH=RH
19600	C SAVE RHYTH TO CHECK WITH OTHER IN SAME POS.
19700		TT=T
19800	C SAVE TOTAL RHYTHM BEFORE THIS NOTE.
19900		J=J+1
20000	C UPDATE COUNTER IN POSITION ARRAY
20100		T=T+RH
20200	C ADD TO TOTAL RHYTHM
20300		RN(J)=T
20400		A=Q(LL+3)
20500	C SAVE POS. OF THIS NOTE.
20600		GO TO 33
20700	133	IF(RH.EQ.RHH)GO TO 33
20800	C  IGNORE 2ND RHYTH IF SAME AS FIRST
20900		IF(ZERO(RZ,B).EQ.0)GO TO 333
21000	C JUMP IF A THIRD DIFFERENT  RHYTHM IN SAME POS. (THIS IS THE LIMIT!)
21100		TTT=TT
21200	C SAVE TOTAL RHYTHM TO THIS POINT.
21300		TT=TT+RH
21400		JJ=JJ+1
21500	C UPDATE COUNTER FOR 2ND ARRAY
21600		RN(JJ)=TT
21700		RRRH=RH
21800		B=A
21900		GO TO 33
22000	333	IF(RH.EQ.RRRH)GO TO 33
22100		TTT=TTT+RH
22200		JJJ=JJJ+1
22300		RN(JJJ)=TTT
22400	33	CONTINUE
22500	C NOW COMPARE THIS WITH BASIC RHYTHM ARRAY (STARTS AT RN(1001)
22600		IF(ST.NE.0)GO TO 733
22700		KE=J-999
22800	C TOTAL NUM OF RHYTHMS ON STAFF1.
22900	CC	IF(JPG.EQ.0)GO TO 2233
23000		IF(JPG.LE.1)GO TO 2233
23100	C JPG=0=PARTS;    =1=PAGE, 1 STAFF
23200	C  JUMP IF ONLY ONE STAFF
23300	733	KF=J-2499
23400	C KF=NUM OF RHYTHMS ON NEXT STAFF.
23500		ST=ST+1
23600		IF(ST.GT.1)GO TO 833
23700	C JUMP IF ALL STAVES HAVE BEEN READ.
23800	1233	J=2500
23900		GO TO 933
24000	833	IF(J.NE.2500)GO TO 1533
24100	C  JUMP IF THERE IS ONLY ONE LINE OF RHYTHM
24200	C NOW LINE ONE STARTS AT RN(1001), LINE 2 AT RN(2501)
24300	
24400	2233	CALL RLOOP(HH,E,KE)
24500	C FOR SINGLE STAFF OF RHYTHM
24600		KL=KE
24700		GO TO 1333
24800	1533	K=1
24900		L=1
25000		M=0
25100	19	KK=K
25200		LL=L
25300	1	SM=10000
25400		K=K+1
25500		IF(K.GT.KE)GO TO 10
25600	4	L=L+1
25700		Y=F(L)
25800		B=Y-F(L-1)
25900		IF(B.LT.SM)SM=B
26000	2	X=E(K)
26100		A=X-E(K-1)
26200	C  A AND B HAVE TRUE DURATIONS NOW
26300		IF(A.LT.SM)SM=A
26400	C SM = SMALLEST RHYTH VALUE BEFORE NEXT CONTACT
26500		IF(ZERO(X,Y).EQ.0)GO TO 3
26600	C JUMP IF EQUAL RHYTHS
26700		IF(X.GT.Y)GO TO 4
26800		K=K+1
26900	C STEP FORWARD UNTIL X IS .GT. Y
27000		GO TO 2
27100	3	IF(K.NE.KK+1)GO TO 13
27200		IF(L.NE.LL+1)GO TO 14
27300		M=M+1
27400		G(M)=E(KK)
27500		GO TO 19
27600	13	IF(L.NE.LL+1)GO TO 15
27700		DO 16 J=KK,K-1
27800		M=M+1
27900	16	G(M)=E(J)
28000		GO TO 19
28100	14	DO 17 J=LL,L-1
28200		M=M+1
28300	17	G(M)=F(J)
28400		GO TO 19
28500	15	XM=SM-.001
28600		M=M+1
28700		P=E(KK)
28800		G(M)=P
28900	7	KK=KK+1
29000		LL=LL+1
29100		YM=SM*1.5
29200	C THIS COULD BE *2 (NOTE /16/8./ VS. /6/12/ )
29300		S=P
29400		T=P
29500	27	A=E(KK)
29600		B=F(LL)
29700		IF(ZERO(A,B).EQ.0)GO TO 19
29800		X=ZERO(A,P)
29900		Y=ZERO(B,P)
30000	C  FUNCT. ZERO:  ZERO=B-P, IF(ABS(ZERO).LT..01)ZERO=0
30100		S=E(KK-1)
30200		T=F(LL-1)
30300	9	IF(A-S.LT.X-.01)X=ZERO(A,S)
30400		IF(B-T.LT.Y-.01)Y=ZERO(B,T)
30500		IF(A.GT.B+.01)GO TO 8
30600		B=A
30700		KK=KK+1
30800	62	IF(X.GT.YM)GO TO 5
30900		IF(X.EQ.0)GO TO 27
31000		P=P+SM
31100	25	M=M+1
31200		G(M)=P
31300		GO TO 27
31400	5	P=P+SM
31500		IF(P)GO TO 203
31600	C IF(P)ERROR
31700		IF(P.LT.B-.01)GO TO 5
31800		GO TO 25
31900	8	X=Y
32000		LL=LL+1
32100		GO TO 62
32200	10	M=M+1
32300		G(M)=E(KE)
32400	CC	TYPE 410,(E(K),K=1,KE)
32500	CC	TYPE 410,(F(K),K=1,KF)
32600	CC	TYPE 410,(G(K),K=1,M)
32700	CBCB	WRITE(21,410)(E(K),K=1,KE)
32800	CB	WRITE(21,410)(F(K),K=1,KF)
32900	CB	WRITE(21,410)(G(K),K=1,M)
33000	410	FORMAT(10F7.2)
33100	C NEXT SECTION SETS UP COMPLETE RHYTH COMPOSITE(NEGS. OR NON-SPC VALS.)
33200	1033	JJ=1
33300		H(1)=0
33400		J=1
33500		K=2
33600		L=2
33700	511	IF(J.EQ.M)GO TO 911
33800		J=J+1
33900		X=G(J)
34000	1211	A=E(K)
34100		B=F(L)
34200		Y=ZERO(X,A)
34300		Z=ZERO(X,B)
34400		IF(A-B.GT..01)GO TO 1111
34500		IF(Y.EQ.0)GO TO 1311
34600		IF(X.LT.A-.01)GO TO 1111
34700		K=K+1
34800	1411	JJ=JJ+1
34900		H(JJ)=-A
35000		GO TO 1211
35100	1111	IF(Z.EQ.0)GO TO 1311
35200		IF(X.LT.B-.01)GO TO 1311
35300		L=L+1
35400		A=B
35500		GO TO 1411
35600	
35700	1311	JJ=JJ+1
35800		H(JJ)=X
35900		IF(Y.EQ.0)GO TO 611
36000		IF(Z.EQ.0)GO TO 711
36100		IF(ZERO(A,B).EQ.0)GO TO 511
36200		P=A
36300		IF(P.GT.B+.01)GO TO 811
36400		IF(P.GT.X+.01)GO TO 511
36500		K=K+1
36600		GO TO 1011
36700	811	P=B
36800		IF(P.GT.X+.01)GO TO 511
36900		L=L+1
37000	1011	JJ=JJ+1
37100		H(JJ)=-P
37200	C NON-SPACED RHYTHS ARE NEG.
37300		GO TO 511
37400	611	K=K+1
37500		IF(Z.GT.0)GO TO 511
37600	711	L=L+1
37700		GO TO 511
37800	911	IF(HH(2).EQ.0)GO TO 2011
37900		K=2
38000		J=2
38100		L=1
38200		HHH(1)=0
38300	1511	IF(J.GT.JJ)GO TO 1811
38400		P=H(J)
38500		A=ABS(P)
38600		B=ABS(HH(K))
38700		IF(ZERO(B,A).EQ.0)GO TO 1611
38800		IF(A.GT.B)GO TO 1711
38900		J=J+1
39000		GO TO 1911
39100	1711	P=HH(K)
39200		GO TO 2211
39300	1611	J=J+1
39400	2211	K=K+1
39500	1911	L=L+1
39600		HHH(L)=P
39700		GO TO 1511
39800	2011	CALL RLOOP(HH,H,JJ)
39900		KL=JJ
40000		GO TO 2111
40100	1811	CALL RLOOP(HH,HHH,L)
40200		KL=L
40300	2111	IF(ST.GE.JPG)GO TO 1333
40400		CALL RLOOP(E,G,M)
40500		KE=M
40600	C GO WAY BACK AND READ ANOTHER LINE.
40700		GO TO 1233
40800	1333	E(1)=0
40900		GO TO 2333
41000		TYPE 410,(HH(K),K=1,KL)
41100		WRITE(21,410)(HH(K),K=1,KL)
41200	2333	JD=1
41300	C JD IS COUNTER FOR DUMMY POSITIONS.
41400		DUMMY(1)=1
41500		ST=0
41600	183	B=0
41700		LL=2
41800	
41900		DO 181 K=1,N
42000		IF(NORH(L))GO TO 181
42100	C LOOK FOR DUMMY RHYTHMS.
42200		IF(L.LE.2)GO TO 2184
42300		RZ=.01
42400	C  RHYTHMIC VALUE OF BAR, METER, KSIG.  CHANGED TO ABS. SIZE LATER.
42500		GO TO 1184
42600	2184	LF=MM(K)
42700		IF(Q(LF-1).NE.ST)GO TO 181
42800	C FOUND RHYTH ON RIGHT STAFF (LF PNTS TO PARAM 3)
42900		J=6
43000		IF(L.EQ.2)J=4
43100		RZ=Q(LF+J)
43200	1184	B=B+RZ
43300	184	V=ABS(HH(LL))
43400		IF(ZERO(B,V).GT.0)GO TO 182
43500	C FOUND RHYTH MATCH
43600		JD=JD+1
43700		DUMMY(JD)=LL
43800		LL=LL+1
43900		GO TO 181
44000	182	IF(B.LT.V-.01)GO TO 181
44100		LL=LL+1
44200		GO TO 184
44300	181	CONTINUE
44400		ST=ST+1
44500		IF(ST.LT.JPG)GO TO 183
44600	
44700	C NEXT SORT DUMMY ARRAY
44800		J=0
44900	185	DO 186 K=2,JD
45000		IF(DUMMY(K).NE.DUMMY(K-1))GO TO 187
45100		DO 188 LL=K,JD
45200	188	DUMMY(LL-1)=DUMMY(LL)
45300		JD=JD-1
45400		GO TO 185
45500	187	IF(DUMMY(K).GT.DUMMY(K-1))GO TO 186
45600		CALL EXCH(DUMMY(K),DUMMY(K-1))
45700		GO TO 185
45800	186	CONTINUE
45900	C NOW DUMMY CONTAINS ALL NON-DUMMY RHYTHS!!!
46000		PX=0
46100		LF=0
46200		K=1
46300		V=0
46400	
46500	81	K=K+1
46600		IF(K.GT.KL)GO TO 1433
46700		B=HH(K)
46800		A=B-V
46900		V=B
47000		IF(V)GO TO 82
47100	85	W=V
47200		IF(A.GT.0.01)GO TO 89
47300	C  .GT. BECAUSE OF ROUND-OFF ERROR
47400		T=5
47500		IF(HH(K+1)-V.LE..01)T=2
47600		PX=PX+T
47700	C THIS FOR BARS, KSIG, METER
47800		GO TO 189
47900	89	PX=PX+PFIB(A)
48000	189	E(K)=PX
48100		IF(LF.NE.0)GO TO 86
48200		GO TO 81
48300	82	LF=K
48400	83	K=K+1
48500		V=HH(K)
48600		IF(V)GO TO 83
48700		A=V-W
48800		GO TO 85
48900	86	LL=LF-1
49000		D=E(K)-E(LL)
49100	87	S=-HH(LF)-HH(LL)
49200		T=HH(K)-HH(LL)
49300		T=S/T
49400	C  THIS FINDS POS OF NON-IMPORTANT RHY BETWEEN IMPORTANT ONES.
49500		E(LF)=E(LL)+D*T
49600		LF=LF+1
49700		IF(LF.NE.K)GO TO 87
49800		LF=0
49900		GO TO 81
50000	
50100	1433	GO TO 2433
50200		TYPE 410,(E(K),K=1,KL)
50300		WRITE(21,410)(E(K),K=1,KL)
50400	C  5 IS SPACE AFTER 1ST BARLINE
50500	2433	R8=RNEXT
50600	C POS OF 1ST BAR = END OF PREV. LINE
50700		IF(ENDLN.EQ.0)RNEXT=9
50800	C  MAKES ROOM FOR 1ST CLEF.
50900		KL=KL-1
51000		J=0
51100		R5=0
51200		KK=1
51300		JD=1
51400		W=0
51500		LF=0
51600	
51700		DO 80 K=1,N
51800		IF(NORH(L))GO TO 80
51900		A=Q(MM(K))
52000		IF(ZERO(A,W).EQ.0)GO TO 80
52100	C  SKIP IF SAME POS OF NOTE OR REST.
52200		W=A
52300		R7=R8
52400	190	J=J+1
52500		IF(J.LE.KL)GO TO 290
52600	203	FORMAT(' FOUND CENTERED WHOLE REST!')
52700		LL=0
52800		IF(JCEN.GE.0)GO TO 120
52900		TYPE 203
53000		GO TO 121
53100	120	W=LL
53200		A=0
53300		DO 124 K=1,N
53400		LF=NN(K)
53500		IF(LF.GT.2)GO TO 124
53600		IF(LF.EQ.0)GO TO 124
53700		KE=MM(K)
53800		IF(Q(KE-1).NE.W)GO TO 124
53900	C ADD UP RHYTHMIC VALUES ON EACH SEPARATE LINE.
54000		JD=6
54100		IF(LF.EQ.2)JD=4
54200		A=A+Q(KE+JD)
54300	124	CONTINUE
54400		TYPE 123,LL,A
54500		LL=LL+1
54600		IF(LL.LT.JPG)GO TO 120
54700	123	FORMAT(' STF',I2,' =',F7.3,' QTRS')
54800	121	PAUSE' RHYTHM MISMATCH'
54900		GO TO 90
55000	290	IF(DUMMY(JD).NE.J)GO TO 190
55100		JD=JD+1
55200	90 	R8=RNEXT+E(J)
55300		R4=R5
55400		R5=A
55500		X=(R8-R7)/(R5-R4)
55600		S=R7-R4*X
55700		DO 91 L=KK,K
55800		LL=MM(L)
55900	91	Q(LL)=S+X*Q(LL)
56000		KK=K+1
56100	80	CONTINUE
56200	
56300		IF(KK.GT.K)GO TO 180
56400	C THIS FOR ITEMS BEYOND LAST IMPORTANT ITEM.
56500		R7=Q(LL)-R5
56600	C R7=NEW POS. OF LAST IMPORTANT ITEM. R5=OLD POS.
56700		DO 280 L=KK,K
56800		LL=MM(L)
56900	280	Q(LL)=R7+Q(LL)
57000	180	JJ=JJ2-2
57100		L=JJ2
57200		M=0
57300	C FLAG FOR REST AT START OF LINE
57400	
57410		V=0
57420		ACCI=0
57500		DO 12 J=1,JJ
57600		   R=CODEN(KPN,J,Q,LA)
57700	CC	   IF(CODEN(KPN,J,Q,LA).NE.4)GO TO 12
57800		   IF(R.EQ.4)GO TO 680
57900		   IF(M)GO TO 780
58000		   IF(R.NE.2)GO TO 780
58100		   IF(KBR.EQ.0)GO TO 12
58200	C  LOOK FOR RESTS AT FRONT OF LINE.
58300		   X=0
58400		   CALL TURN(J,JJ,1,X)
58500		   PGTRN(KBR)=PGTRN(KBR)+X
58600		   M=-1
58700	780	   IF(R.NE.1)GO TO 12
58710		IF(V.NE.Q(LA+3))GO TO 782
58720		IF(JACC)GO TO 781
58730	782	IF(AMOD(Q(LA+5),10.0).EQ.0)GO TO 781
58740		JACC=-1
58750		ACCI=ACCI+.5
58760		V=Q(LA+3)
58800	781	   M=-1
58900		   IF(NOGRCE)GO TO 12
59000	C NEXT TO GIVE EQUAL SPACE FOR EVERY GRACE NOTE
59100	C FOUND A NOTE
59200		   IF(Q(LA+9).GT.0.05)GO TO 12 
59300	C JUMP IF NOT A GRACE NOTE
59400		   R=Q(LA+2)
59500	C  THE STAFF NUM.
59600		   DO 580 LF=J+1,JJ
59700		   	IF(CODEN(KPN,LF,Q,JD).NE.1)GO TO 580
59800			IF(Q(JD+2).NE.R)GO TO 580
59900		   	IF(Q(JD).LT.7)GO TO 580
60000		   	IF(Q(JD+9).EQ.0)GO TO 580
60100	C   CHORD NOTE
60200	  	   	R4=Q(LA+3) 
60300	CC	   	R4=Q(LA+3)-1 
60400		   	R5=Q(JD+3)
60500	C  THE STAFF # IS IN R2
60600		   	R8=RSTFAC(IFIX(R2+1))+.5
60700		   	IF(Q(JD+4).LT.80)R8=R8*2  
60800	C  INSURES SPACE BETWEEN GRACE NOTE AND NEXT NOTE
60900		   	R8=R5-R8
61000	CC	   	R8=R5-R8-1
61100	CCC	   	IF(R4.EQ.R5)GO TO 12
61200		   	IF(R4.NE.R5)GO TO 480
61300	C  GRACE NOTE AT START OF LINE ***** FIX THIS????
61400			DO 880 KE=1,LF-1
61500	880		Q(KPN(KE)+3)=R8
61600	C  MOVE THE GRACE NOTE, AND OTHER STUFF, TO LEFT.
61700		   	GO TO 12
61800	480	   	R2=Q(LA+2)
61900		   	R9=R5
62000		   	CALL PTMOVE(Q,KPN)
62100	CC	   	TYPE 9999,Q(J+3),Q(JD+3)
62200	CC9999	   	FORMAT(2F)
62300		   	GO TO 12 
62400	580	   CONTINUE
62500		   GO TO 12
62600	C  ABOVE FOR GRACE NOTE SPACING.
62700	680	   KBR=KBR+1
62800	C BAR LINE COUNTER
62900		   T=Q(LA+3)
63000	C TOTAL SPACE
63100		   X=0
63200		   CALL TURN(J-1,1,-1,X)
63300		   CALL TURN(J+1,JJ,1,X)
63400	222	   PGTRN(KBR)=X
63500	C FINDS PAGE-TURN POSSIBILITIES
63600		   BARS(KBR)=T-RNEXT+ACCI
63700	C SIZE OF THIS MEASURE + .5*ACCIDENTALS
63710		ACCI=0
63800		   K=J
63900		   RNEXT=T
64000	12	CONTINUE
64100	
64200		IF(K.NE.JJ)RNEXT=Q(KPN(JJ)+3)
64300		RNEXT=RNEXT+3
64400		JJ2=L 
64500	C JJ2 GETS WIPED OUT IN PTMOVE, SO GET IT BACK HERE
64600	380	LCNT=0
64700		NDPY=0
64800	C JJ2 IS END OF PNTR DATA
64900		JPQ=KPN(JJ2-1)+1
65000		CALL PUTEXT(NMPG,'PAG')
65100		CALL EXTOUT(RSTFAC,128)
65200		CALL EXTOUT(PN,JJ2)
65300		CALL EXTOUT(Q,JPQ)
65400		CALL FINEXT
65500	
65600		LASTNM=NMPG
65700		NMPG=NMPG+2
65800		IF(NMPG.LE.NPZ)GO TO 122
65900	C  WILL GO FROM PAGEA TO PAGFZ  (52)   ADD TO THIS!!
66000		NMPG='PAGFA'
66100		NPZ=NPZ+256
66200	CZ122	KNM(1)=KNM(1)+2
66300	122	ENDLN=RNEXT
66400		END